var makeExpanding = function makeExpandingArea(el) {
    var timer = null;
    //由于ie8有溢出堆栈问题，故调整了这里
    var setStyle = function (el, auto) {
        if (auto) el.style.height = 'auto';
        el.style.height = el.scrollHeight + 'px';

    };
    var delayedResize = function (el) {
        if (timer) {
            clearTimeout(timer);
            timer = null;
        }
        timer = setTimeout(function () {
            setStyle(el)
        }, 200);
    };
    if (el.addEventListener) {
        el.addEventListener('input', function () {
            setStyle(el, 1);
        }, false);
        setStyle(el)
    } else if (el.attachEvent) {
        el.attachEvent('onpropertychange', function () {
            setStyle(el)
        });
        setStyle(el)
    }
    if (window.VBArray && window.addEventListener) {
        el.attachEvent("onkeydown", function () {
            var key = window.event.keyCode;
            if (key == 8 || key == 46) delayedResize(el);
        });
        el.attachEvent("oncut", function () {
            delayedResize(el);
        });
    }
};

/**
 * 关闭当前页签
 * @param navTab
 */
function closeTab(navTab) {
    var self = parent.$multitabs;
    var $tabPane = self._getTabPane(navTab);
    var $navTabLi = navTab.parent('li');

    //close unsave tab confirm
    if ($navTabLi.length &&
        $tabPane.length &&
        $tabPane.hasClass('unsave') &&
        !self._unsaveConfirm()) {
        return self;
    }

    if ($navTabLi.hasClass("active")) {
        var $nextLi = $navTabLi.next("li:first"),
            $prevLi = $navTabLi.prev("li:last");
        //if ($nextLi.size()) {
        if ($nextLi.length) {
            self.active($nextLi);
            self.activeMenu($nextLi.find('a'));
            //} else if ($prevLi.size()) {
        } else if ($prevLi.length) {
            self.active($prevLi);
            self.activeMenu($prevLi.find('a'));
        }
    }
}

/**
 * 打开新页签
 * @param title
 * @param url
 */
function openTab(title, url) {
    parent.$(parent.document).data('multitabs').create({
        iframe: true,                                // 指定为iframe模式，当值为false的时候，为智能模式，自动判断（内网用ajax，外网用iframe）。缺省为false。
        title: title,                     // 标题（可选），没有则显示网址
        url: url                   // 链接（必须），如为外链，强制为info页
    }, true);// true 则激活新增的tab页
}

/**
 * @param navTab
 */
function delStorageAndRemove(navTab) {
    var $tabPane = parent.$multitabs._getTabPane(navTab);
    var $navTabLi = navTab.parent('li');
    parent.$multitabs._delStorage(navTab.attr('data-id')); //remove tab from session storage
    $navTabLi.remove();
    $tabPane.remove();
}

/**
 * 提交完表单关闭表单页面后，刷新相关table列表页面，以显示新增条目信息
 */
function refreshActivePane(url) {
    var $openNav = parent.$('.mt-nav-bar .nav-tabs').find('li.active'),
        $openTab = parent.$multitabs._getNavTab($openNav),
        $openPane = parent.$multitabs._getTabPane($openTab);
    $($openPane).attr('src', url);
}


/**
 * 功能：添加行
 * 参数：originalTableId - 原表格id  targetTableId - 目标表格id
 * */
function addRow(originalTableId, targetTableId) {
    // console.log(typeof originalTableId);
    var $originalTable;
    var selectRowData;
    var $targetTable = $('#' + targetTableId);
    var targetTabelDate = $targetTable.bootstrapTable('getData', true);

    if (typeof originalTableId == 'object') {
        selectRowData = originalTableId;
    } else {
        $originalTable = $('#' + originalTableId);
        selectRowData = $originalTable.bootstrapTable('getSelections');
    }
    console.log(selectRowData);

    if (selectRowData.length == 0) {
        // 弹窗表格未选择时直接关闭弹窗
        $originalTable.parents('.modal').modal('hide');
        return;
    }

    var targetId;
    var priceField;
    var numberField;

    if (!!selectRowData[0].memberProductId) {
        // 会员产品列表字段
        targetId = 'memberProductId';
        priceField = 'sellingCardPrice';
    }
    if (!!selectRowData[0].customerProductId) {
        // 产品列表字段
        targetId = 'customerProductId';
        priceField = 'productDiscountPrice';
        numberField = 'productNumber';
    }
    if (!!selectRowData[0].productActivityId) {
        // 活动产品列表字段
        targetId = 'productActivityId';
        priceField = 'activityDiscountPrice';
        numberField = 'activityNumber';
    }
    if (!!selectRowData[0].giftActivityName) {
        // 赠品列表字段
        targetId = 'giftActivityName';
        numberField = 'giftActivity';
    }
    if (typeof originalTableId == 'object') {
        targetId = 'productGiftActivityId';
    }

    if (targetTabelDate.length == 0) {
        for (var i = 0; i < selectRowData.length; i++) {
            selectRowData[i][priceField] = '';
            selectRowData[i][numberField] = 1;
        }
        // console.log(selectRowData);
        // 目标表格为空时直接插入行
        $targetTable.bootstrapTable('append', selectRowData);
    } else {
        var targetTableDateStr = JSON.stringify(targetTabelDate);
        // 目标表格不为空判断是否已存在于表格中
        // console.log(selectRowData);
        // console.log(JSON.stringify(targetTabelDate));
        for (var i = 0; i < selectRowData.length; i++) {
            if (targetTableDateStr.indexOf('"' + targetId + '":"' + selectRowData[i][targetId] + '"') != -1) {
                console.log(targetTableDateStr, selectRowData[i][targetId])
                console.log('已存在');
            } else {
                console.log('不存在');
                selectRowData[i][priceField] = '';
                selectRowData[i][numberField] = 1;
                $targetTable.bootstrapTable('append', selectRowData[i]);
            }
        }
    }
    if (typeof originalTableId == 'string') {
        $originalTable.parents('.modal').modal('hide');
    }
}

/**
 * 功能：延迟执行函数
 * 参数：func - 目标函数  wait - 延迟时间  immediate - 第一次是否立即执行
 * */
function debounce(func, wait, immediate) {
    var timeout;
    return function () {
        var context = this, args = arguments;
        var later = function () {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};

/**
 * 功能：时间格式化
 * 参数：dateTime - 时间戳
 * 调用方法：new Date(time).Format("yyyy-MM-dd") 或 new Date(time).Format("yyyy-MM-dd hh:mm:ss");
 * */
Date.prototype.Format = function (dateTime) {
    var o = {
        "M+": this.getMonth() + 1,  // 月
        "d+": this.getDate(),       // 日
        "h+": this.getHours(),      // 时
        "m+": this.getMinutes(),    // 分
        "s+": this.getSeconds()     // 秒
    };
    if (/(y+)/.test(dateTime)) {          //根据y的长度来截取年
        dateTime = dateTime.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(dateTime)) dateTime = dateTime.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    }
    return dateTime;
}


// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).FormatFMT("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).FormatFMT("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18

Date.prototype.FormatFMT = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1, // 月份
        "d+": this.getDate(), // 日
        "h+": this.getHours(), // 小时
        "m+": this.getMinutes(), // 分
        "s+": this.getSeconds(), // 秒
        "q+": Math.floor((this.getMonth() + 3) / 3), // 季度
        "S": this.getMilliseconds() // 毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}


/**
 * 功能：模态框显示关闭时，模糊页面背景
 * */
$('.modal').on('show.bs.modal', function () {
    $('body').addClass('filter-blur');
}).on('hidden.bs.modal', function () {
    if (!$('.modal-backdrop').length) { // 判断是否还有其他弹窗，有则保留filter-blur，否则删除
        $('body').removeClass('filter-blur');
    }
    // 关闭弹窗后重置弹窗位置
    $(this).find('.modal-dialog').css({
        left: 0,
        top: 0
    })
});

/**
 * 功能：隐藏电话号码中间四位
 * */
function transTelNumber(number) {
    if (number) {
        return number.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
    }
}

/**
 * 功能：限定标签长度为5个字符
 * */
$('.tagsinput').on('beforeItemAdd', function (event) {
    // 判断标签长度
    if (event.item.length > 5) {
        promptInfo('标签最多5个字符，请重新输入');
        event.cancel = true;
    }
})

$('input').on('keyup', function (event) {
    // 判断标签长度
    // this.value=this.value.replace(/^\D*(\d*(?:\.\d{0,4})?).*$/g, '$1')
    ///^\s+|%|\s+$/g
    ///^\s+|\s+$/g
    // this.value=this.value.replace(/^\s+|%|\s+$/g, '')
    this.value = this.value.replace(/%/g, '')
})

/**
 * 功能：查看附件
 * 参数：type 0-合同附件  1-审核附件  annexFilePath-合同附件url  examineFilePath-审核附件url
 * 注意：需引入viewer.js、jquery-viewer.js、viewer.css
 * */
function showFile(type) {
    var iframeSrc;
    type ? iframeSrc = examineFilePath : iframeSrc = annexFilePath;
    if (iframeSrc == null) {
        $.alert("附件不存在！")
        return false;
    }
    // 获取后缀
    var srcExt = iframeSrc.substr(iframeSrc.lastIndexOf('.'));
    // 判断是否为图片
    var imgExtArr = ['.png', '.jpg', '.jpeg', '.bmp', '.gif', '.webp', '.psd', '.svg', '.tiff'];
    if (imgExtArr.indexOf(srcExt.toLowerCase()) !== -1) {
        console.log('附件是图片');
        var imgNode = new Image();
        imgNode.src = iframeSrc;
        var viewer = new Viewer(imgNode, {
            navbar: false,
            toolbar: false,
            title: false,
            hidden: function () {
                viewer.destroy();
            }
        });
        viewer.show();
        // $('#fileIframe')
    } else {
        // 判断是否为word文档，是则修改后缀名为pdf
        /*if (iframeSrc.indexOf('.doc') !== -1) {
            console.log('附件为word文档，修改后缀名为pdf直接预览');
            iframeSrc = iframeSrc.split('.doc')[0] + '.pdf';
        } else*/
        if (iframeSrc.indexOf('.pdf') !== -1) {
            console.log('附件为PDF文档');
            $('#fileIframe').prop('src', iframeSrc);
            $('#fileModal').modal('show');
        } else {
            // 附件非图片、word、pdf格式无法预览，直接下载
            $.alert({
                title: '提醒',
                content: '附件格式无法预览，即将为你下载到本地！',
                buttons: {
                    cancel: {
                        text: '取消',
                        btnClass: 'btn-link',
                    },
                    confirm: {
                        text: '下载',
                        btnClass: 'btn-primary',
                        action: function () {
                            window.location.href = encodeURI(encodeURI(iframeSrc));
                        }
                    },
                }
            });
        }
    }
}

/**
 * 功能：起止日期控件
 * 参数：controlId-控件input绑定id(必填)  controlName-控件name属性  formId-表单id
 * 注意：引入相关js文件 dataRangePicker.min.js、moment.min.js、daterangepicker.css
 * */
function timeData(controlId, controlName, formId) {
    var $dateDom = $('#' + controlId);
    var $formDom = $('#' + formId);
    // 判断控件父级是否为模态框
    var modal = $dateDom.parents('.modal')[0];
    var parentEl = 'body';
    if (modal) {
        // 父级为模态框时，日期控件放置到模态框中
        parentEl = '#' + modal.id;
    }

    $dateDom.daterangepicker({
        parentEl,   // 日期控件位置，默认为body
        startDate: moment().startOf('day'),
        endDate: moment().add(6, 'day'),
        autoUpdateInput: false,
        showDropdowns: true,
        alwaysShowCalendars: true,
        ranges: {
            // 'Last 30 Days': [moment().subtract(29, 'days'), moment()],
            '本月': [moment().startOf('month'), moment().endOf('month')],
            '未来一个月': [moment().startOf('day'), moment().add(1, 'month').subtract(1, 'days').endOf('day')],
            '未来三个月': [moment().startOf('day'), moment().add(3, 'month').subtract(1, 'days').endOf('day')],
            '未来六个月': [moment().startOf('day'), moment().add(6, 'month').subtract(1, 'days').endOf('day')],
            '未来一年': [moment().startOf('day'), moment().add(12, 'month').subtract(1, 'days').endOf('day')],
            '未来三年': [moment().startOf('day'), moment().add(36, 'month').subtract(1, 'days').endOf('day')],
        },
        locale: {
            format: 'YYYY-MM-DD',
            separator: ' 至 ',
            applyLabel: '确定',
            cancelLabel: '清空',
            fromLabel: 'From',
            toLabel: 'To',
            customRangeLabel: '自定义日期',
            weekLabel: 'W',
            daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
            monthNames: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
            firstDay: 1
        },
    });
    // 确定按钮添加合同日期
    $dateDom.on('apply.daterangepicker', function (ev, picker) {
        $(this).val(picker.startDate.format('YYYY-MM-DD') + ' 至 ' + picker.endDate.format('YYYY-MM-DD'));
        if ($formDom.data('bootstrapValidator') != undefined) {
            $formDom.data('bootstrapValidator')
                .updateStatus(controlName, 'NOT_VALIDATED', null)
                .validateField(controlName);
        }
    });
    // 清空按钮清空合同日期
    $dateDom.on('cancel.daterangepicker', function (ev, picker) {
        $(this).val('');
        if ($formDom.data('bootstrapValidator') != undefined) {
            $formDom.data('bootstrapValidator')
                .updateStatus(controlName, 'NOT_VALIDATED', null)
                .validateField(controlName);
        }
    });
}

/*
* 获取月份减去几个月之后的日期 yyyy-MM
* */
function GetPreMonthDay(date, monthNum) {
    var dateArr = date.split('-');
    var year = dateArr[0]; //获取当前日期的年份
    var month = dateArr[1]; //获取当前日期的月份
    var year2 = year;
    var month2 = parseInt(month) - monthNum;
    if (month2 <= 0) {
        var absM = Math.abs(month2);
        year2 = parseInt(year2) - Math.ceil(absM / 12 == 0 ? 1 : parseInt(absM) / 12);
        month2 = 12 - (absM % 12);
    }
    if (month2 < 10) {
        month2 = '0' + month2;
    }
    var t2 = year2 + '-' + month2;
    return t2;
}













